package com.cj.tool

import android.os.SystemClock
import com.cj.publish.utils.execute
import com.cj.publish.utils.gotoAct
import com.cj.publish.utils.toast
import com.cj.tool.http.BaseObserver
import com.cj.tool.http.RestClient
import com.cj.tool.utils.SimpleConfig
import kotlinx.android.synthetic.main.activity_login.*
import okhttp3.ResponseBody
import org.json.JSONObject

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━感觉萌萌哒━━━━━━
 *
 * Created by yi on 2021/3/3.
 */
class LoginActivity : BaseActivity() {

    var user: String? = null

    companion object {
        const val INPUT_USER = "input_user"
    }

    override fun layoutId(): Int {
        return R.layout.activity_login
    }

    override fun initView() {
        hideTitleBar()
        user = SimpleConfig.getParam(this, INPUT_USER, "") as String
        user?.apply {
            et_login_user.setText(this)
        }
    }

    override fun setListener() {
        btn_login.setOnClickListener {
            if (et_login_user.text.toString().trim().isEmpty() || et_login_pwd.text.toString()
                    .trim().isEmpty()
            ) {
                toast("账号或密码不能为空")
            } else if (et_login_user.text.toString()
                    .trim().length < 0 || et_login_pwd.text.toString()
                    .trim().length < 5
            ) {
                toast("输入的账号或密码格式错误")
            } else {
                execute(RestClient().httpService.login(
                    et_login_user.text.toString().trim(),
                    et_login_pwd.text.toString()
                ),
                    object : BaseObserver<ResponseBody>(this, true) {
                        override fun onNext(t: ResponseBody) {
                            val jsonObject = JSONObject(t.string())
                            jsonObject.optString("code").apply {
                                if ("200" == this) {
                                    SimpleConfig.setParam(
                                        this@LoginActivity,
                                        INPUT_USER,
                                        et_login_user.text.toString()
                                    )
                                    gotoAct<IndexActivity>()
                                    finish()
                                } else {
                                    toast(jsonObject.optString("msg"))
                                }
                            }
                        }

                    })
            }
        }

        iv_login_top.setOnClickListener {
            user?.apply {
                continuousClick()
            }
        }
    }

    private val counts = 3 // 点击次数
    private val duration: Long = 1000 // 规定有效时间
    var mHits = LongArray(counts)
    private fun continuousClick() {
        //每次点击时，数组向前移动一位
        System.arraycopy(mHits, 1, mHits, 0, mHits.size - 1)
        //为数组最后一位赋值
        mHits[mHits.size - 1] = SystemClock.uptimeMillis()
        if (mHits[0] >= SystemClock.uptimeMillis() - duration) {
            //重新初始化数组
            mHits = LongArray(counts)
            gotoAct<IndexActivity>()
            finish()

        }
    }

    override fun isFitSystemWindows(): Boolean {
        return false
    }
}